home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1993 / MacHack 1993.toast / MacHack™ 1987-1992 / MacHack™ '90 / Other Stuff / Networking ƒ / ATP Sample App / packets / atalk.h next >
Encoding:
C/C++ Source or Header  |  1989-07-26  |  4.4 KB  |  227 lines  |  [TEXT/KAHL]

  1. #define    MPP_REFNUM    ~9
  2. #define    ATP_REFNUM    ~10
  3.  
  4. typedef struct
  5.     {
  6.     QElemPtr    qLink;
  7.     int            qType;
  8.     int            ioTrap;
  9.     Ptr            ioCmdAddr;
  10.     ProcPtr        ioCompletion;
  11.     OsErr        ioResult;
  12.     StringPtr    ioNamePtr;
  13.     int            ioVRefNum;
  14.     int            ioRefNum;
  15.     int            csCode;
  16.     
  17.     byte        socket;
  18.     byte        checksumFlag;
  19.     byte        *listener;
  20. #define wdsPointer listener
  21.     } ddpParam;
  22.  
  23. /* ATP errors */
  24.  
  25. #define noError            0
  26. #define tooManyReqs        0xfbb7    /*    -1097    */
  27. #define    noDataArea        0xfbb0    /*    -1104    */
  28. #define    reqAborted        0xfbaf    /*    -1105    */
  29.  
  30. /* csCodes for ATP control calls. */
  31. #define relRspCb        249
  32. #define    closeATPSkt        250
  33. #define    addResponse        251
  34. #define    sendResponse    252
  35. #define    getRequest        253
  36. #define    openATPSkt        254
  37. #define    sendRequest        255
  38. #define    relTCB            256
  39. #define    killGetReq        257
  40. #define killSendReq        258
  41.  
  42. #define    atpXO    0x20
  43. #define atpEOM    0x10
  44.  
  45.  
  46. typedef struct {
  47.     word network;
  48.     byte node;
  49.     byte socket;
  50.     } netAddrType;
  51.  
  52. typedef struct {
  53.     word    bsdBuffSz;
  54.     byte    *bdsBuffAddr;
  55.     word    bdsDataSz;
  56.     ulong    bdsUserData;
  57.     } at_BDSType, *at_BDSPtrType;
  58.     
  59. typedef struct    atpRBlk
  60.     {
  61.     QElemPtr    qLink;
  62.     word        qType;
  63.     word        ioTrap;
  64.     Ptr            ioCmdAddr;
  65.     ProcPtr        ioCompletion;
  66.     OsErr        ioResult;
  67.     long        userData;
  68.     word        reqTid;
  69.     word        ioRefNum;
  70.     word        csCode;
  71.     byte        atpSkt;
  72.     byte        atpFlgs;
  73.     netAddrType    addrBlk;
  74.         union{
  75.             struct{
  76.                 word        reqLength;
  77.                 byte        *reqPointer;
  78.                 long        bdsPtr;    /* only a space holder */
  79.                 byte        btMap;
  80.                 byte        bdsSz;    /* only a space holder */
  81.                 word        tid;
  82.             } getReq, relTcb;
  83.             
  84.             struct{
  85.                 word        reqLength;        /* only a space holder */
  86.                 byte        *reqPointer;    /* only a space holder */
  87.                 long        bdsPtr;        /* only a space holder */
  88.                 struct atpRBlk *killQEl;    /* pointer to element to kill.*/
  89.             } killGReq, killSReq;
  90.             
  91.             struct{
  92.                 word                reqLength;
  93.                 byte                *reqPointer;
  94.                 at_BDSPtrType        bdsPointer;
  95.                 byte                numOfBuffs;
  96.                 byte                bdsSize;
  97.                 word                tid;
  98.             } sendResp;
  99.             
  100.             struct{
  101.                 word                reqLength;
  102.                 byte                *reqPointer;
  103.                 at_BDSPtrType        bdsPointer;
  104.                 byte                numOfBuffs;
  105.                 byte                timeOutVal;
  106.                 byte                numOfResp;
  107.                 byte                retryCount;
  108.             } sendReq;
  109.         } atpUnion;
  110.         
  111.     } atpParam, *atpParamPtrType;
  112.  
  113. #define sendReqUnion atpUnion.sendReq
  114. #define getReqUnion atpUnion.getReq
  115. #define sendRespUnion atpUnion.sendResp
  116. #define killReqUnion atpUnion.killGReq
  117.  
  118. typedef struct
  119.     {
  120.     QElemPtr    qLink;
  121.     int            qType;
  122.     int            ioTrap;
  123.     Ptr            ioCmdAddr;
  124.     ProcPtr        ioCompletion;
  125.     OsErr        ioResult;
  126.     StringPtr    ioNamePtr;
  127.     int            ioVRefNum;
  128.     int            ioRefNum;
  129.     int            csCode;
  130.     
  131.     byte        interval;
  132.     byte        count;
  133.     byte        *ntQElPtr;
  134.  
  135.     union {
  136.         byte        verifyFlag;
  137.         struct {
  138.             byte        *retBuffPtr;
  139.             int            retBuffSize;
  140.             int            maxToGet;
  141.             int            numGotten;
  142.             } lookup;
  143.         } nbp;
  144.     } nbpParam;
  145.  
  146. typedef struct {
  147.     byte    *next;
  148.     word    network;
  149.     byte    node;
  150.     byte    socket;
  151.     byte    internal;
  152.     byte    names[];
  153.     } namesTableEntry;
  154.  
  155. typedef struct {
  156.     word    wds_size;
  157.     byte    *wds_ptr;
  158.     } wdsType;
  159.  
  160. typedef struct {
  161.     byte    filler[8];
  162.     uword    wds_dstNet;
  163.     uword    filler2;
  164.     byte    wds_dstNode;
  165.     byte    filler3;
  166.     byte    wds_dstSkt;
  167.     byte    filler4;
  168.     byte    wds_type;
  169.     } wdsHeaderType;
  170.  
  171. /* Well-known offsets within MPP local variables (as pointed to by AbusVars) */
  172.  
  173. #define    AbusVars        0x2d8         /* Pointer to the local variables */
  174. #define mppUnitNum        9             /* MPP unit number */
  175. #define    atpUnitNum        10          /* ATP unit number */
  176.  
  177. #define    sysLAPAddr        0             /* This node's LAP address */
  178. #define    toRHA            1             /* Top of RHA */
  179. #define    sysABridge        0x19         /* Node address of a bridge [byte] */
  180. #define    sysNetNum        0x1a         /* This node's network number [word] */
  181. #define    vSCCEnable        0x1c         /* SR value to re-enable SCC interrupts */
  182.  
  183. /* MPP miscellaneous */
  184. #define    RHASize         0x18        /* Size of read header area */
  185. #define MPPRefNum        -10            /* (-mppUnitNum-1) */
  186.  
  187. /* returned by ReadPacket and ReadRest routines */
  188. #define OverrunErr    -1
  189. #define CRCErr        -2
  190. #define UnderrunErr -3
  191. #define LengthErr    -4
  192.  
  193. #define    WDSSize            24
  194. #define    DDPHeaderSize    16
  195.  
  196. /* LAP header offsets */
  197. #define    lapDstAdr    0
  198. #define    lapSrcAdr    1
  199. #define    lapType        2
  200. #define    lapHdSz        3
  201.  
  202. #define    shortDDP    1
  203. #define    longDDP        2
  204.  
  205. /* DDP header offsets */
  206. #define    sDDPlength    0
  207. #define    sDDPDstSkt    2
  208. #define    sDDPSrcSkt    3
  209. #define    sDDPType    4
  210.  
  211. #define    ddpLength    0
  212. #define    ddpChksum    2
  213. #define    ddpDstNet    4
  214. #define    ddpSrcNet    6
  215. #define    ddpDstNode    8
  216. #define    ddpSrcNode    9
  217. #define    ddpDstSkt    10
  218. #define    ddpSrcSkt    11
  219. #define    ddpType        12
  220.  
  221. #define registerName    253
  222. #define    lookupName        251
  223. #define    removeName        252
  224. #define openSkt            248
  225. #define writeDDP        246
  226. #define closeSkt        247
  227.